microcad-lang-parse 0.5.0

µcad language syntax lexer and parser
Documentation
---
source: crates/syntax/tests/parser.rs
expression: parse(input)
---
Ok(
    Program {
        span: 0..17,
        statements: StatementList {
            span: 0..17,
            extras: ItemExtras {
                leading: LeadingExtras(
                    [],
                ),
                trailing: TrailingExtras(
                    [],
                ),
            },
            statements: [],
            tail: Some(
                ExpressionStatement {
                    span: 0..17,
                    extras: ItemExtras {
                        leading: LeadingExtras(
                            [],
                        ),
                        trailing: TrailingExtras(
                            [],
                        ),
                    },
                    attributes: [],
                    expression: BinaryOperation(
                        BinaryOperation {
                            span: 0..17,
                            lhs: ArrayList(
                                ArrayListExpression {
                                    span: 0..6,
                                    extras: ItemExtras {
                                        leading: LeadingExtras(
                                            [],
                                        ),
                                        trailing: TrailingExtras(
                                            [],
                                        ),
                                    },
                                    items: [
                                        ArrayItem {
                                            span: 1..2,
                                            extras: ItemExtras {
                                                leading: LeadingExtras(
                                                    [],
                                                ),
                                                trailing: TrailingExtras(
                                                    [],
                                                ),
                                            },
                                            expression: Literal(
                                                Literal {
                                                    span: 1..2,
                                                    extras: ItemExtras {
                                                        leading: LeadingExtras(
                                                            [],
                                                        ),
                                                        trailing: TrailingExtras(
                                                            [],
                                                        ),
                                                    },
                                                    literal: Integer(
                                                        IntegerLiteral {
                                                            span: 1..2,
                                                            value: 1,
                                                            raw: "1",
                                                        },
                                                    ),
                                                },
                                            ),
                                        },
                                        ArrayItem {
                                            span: 3..4,
                                            extras: ItemExtras {
                                                leading: LeadingExtras(
                                                    [],
                                                ),
                                                trailing: TrailingExtras(
                                                    [],
                                                ),
                                            },
                                            expression: Literal(
                                                Literal {
                                                    span: 3..4,
                                                    extras: ItemExtras {
                                                        leading: LeadingExtras(
                                                            [],
                                                        ),
                                                        trailing: TrailingExtras(
                                                            [],
                                                        ),
                                                    },
                                                    literal: Integer(
                                                        IntegerLiteral {
                                                            span: 3..4,
                                                            value: 2,
                                                            raw: "2",
                                                        },
                                                    ),
                                                },
                                            ),
                                        },
                                    ],
                                    unit: Some(
                                        Unit {
                                            span: 5..6,
                                            name: "\"",
                                        },
                                    ),
                                },
                            ),
                            operation: BinaryOperator {
                                span: 7..9,
                                operation: Equal,
                            },
                            rhs: ArrayList(
                                ArrayListExpression {
                                    span: 10..17,
                                    extras: ItemExtras {
                                        leading: LeadingExtras(
                                            [],
                                        ),
                                        trailing: TrailingExtras(
                                            [],
                                        ),
                                    },
                                    items: [
                                        ArrayItem {
                                            span: 11..12,
                                            extras: ItemExtras {
                                                leading: LeadingExtras(
                                                    [],
                                                ),
                                                trailing: TrailingExtras(
                                                    [],
                                                ),
                                            },
                                            expression: Literal(
                                                Literal {
                                                    span: 11..12,
                                                    extras: ItemExtras {
                                                        leading: LeadingExtras(
                                                            [],
                                                        ),
                                                        trailing: TrailingExtras(
                                                            [],
                                                        ),
                                                    },
                                                    literal: Integer(
                                                        IntegerLiteral {
                                                            span: 11..12,
                                                            value: 1,
                                                            raw: "1",
                                                        },
                                                    ),
                                                },
                                            ),
                                        },
                                        ArrayItem {
                                            span: 13..14,
                                            extras: ItemExtras {
                                                leading: LeadingExtras(
                                                    [],
                                                ),
                                                trailing: TrailingExtras(
                                                    [],
                                                ),
                                            },
                                            expression: Literal(
                                                Literal {
                                                    span: 13..14,
                                                    extras: ItemExtras {
                                                        leading: LeadingExtras(
                                                            [],
                                                        ),
                                                        trailing: TrailingExtras(
                                                            [],
                                                        ),
                                                    },
                                                    literal: Integer(
                                                        IntegerLiteral {
                                                            span: 13..14,
                                                            value: 2,
                                                            raw: "2",
                                                        },
                                                    ),
                                                },
                                            ),
                                        },
                                    ],
                                    unit: Some(
                                        Unit {
                                            span: 15..17,
                                            name: "cm",
                                        },
                                    ),
                                },
                            ),
                        },
                    ),
                },
            ),
        },
    },
)